package proyectoX.src.fabricas;

import proyectoX.src.aplicacion.Juego;
import proyectoX.src.powerups.*;

/**
 * Clase utilizada para simplificar la creación de powerups.
 * Provee con powerups al objeto que invoque alguno de sus métodos.
 *
 */
public class FactoryPowerups {

	protected Juego juego;
	
	/**
	 * Crea la fábrica manteniendo una referencia al objeto Juego en uso.
	 * @param j Objeto Juego.
	 */
	public FactoryPowerups(Juego j) {
		juego = j;
	}
	
	/**
	 * Crea un powerup de vida extra en la posición pasada por parámetro.
	 * @param x Posición x.
	 * @param y Posición y.
	 * @return El powerup creado.
	 */
	public PwrVidaExtra crearVidaExtra(int x, int y) {
		return new PwrVidaExtra(juego, x,y);
	}
	
	/**
	 * Crea un powerup de puntos de vida en la posición pasada por parámetro.
	 * @param x Posición x.
	 * @param y Posición y.
	 * @return El powerup creado.
	 */
	public PwrPuntosDeVida crearPuntosDeVida(int x, int y) {
		return new PwrPuntosDeVida(juego, x,y);
	}
	
	/**
	 * Crea un powerup de nivel de láser en la posición pasada por parámetro.
	 * @param x Posición x.
	 * @param y Posición y.
	 * @return El powerup creado.
	 */
	public PwrNivelLaser crearNivelLaser(int x, int y) {
		return new PwrNivelLaser(juego, x,y);
	}
	
	/**
	 * Crea un powerup de municiones de arma secundaria en la posición pasada por parámetro.
	 * @param x Posición x.
	 * @param y Posición y.
	 * @return El powerup creado.
	 */
	public PwrMunicionesArma crearMunicionesArma(int x, int y) {
		return new PwrMunicionesArma(juego, x,y);
	}
	
	/**
	 * Crea un powerup de municiones de habilidad especial en la posición pasada por parámetro.
	 * @param x Posición x.
	 * @param y Posición y.
	 * @return El powerup creado.
	 */
	public PwrMunicionesHabilidad crearMunicionesHabilidad(int x, int y) {
		return new PwrMunicionesHabilidad(juego, x,y);
	}
	
	/**
	 * Crea un powerup de bomba devastadora en la posición pasada por parámetro.
	 * @param x Posición x.
	 * @param y Posición y.
	 * @return El powerup creado.
	 */
	public PwrMunicionesBombaDevastadora crearMunicionesBombaDevastadora(int x, int y) {
		return new PwrMunicionesBombaDevastadora(juego, x,y);
	}
	
	/**
	 * Crea un powerup de barrerra eléctrica en la posición pasada por parámetro.
	 * @param x Posición x.
	 * @param y Posición y.
	 * @return El powerup creado.
	 */
	public PwrBarra crearBarra(int x, int y) {
		return new PwrBarra(juego, x,y);
	}
}
